using System;
using System.Collections.Generic;
using System.Text;
using System.Data;           //CommandType
using System.Data.SqlClient; //SqlConnection, SqlCommand, SqlDataReader
using Etna.Exportaciones.En;

namespace Etna.Exportaciones.Ad
{
   public class AdContrato
   {
      //public AdContrato(SqlConnection con)
      //{
      //   conexion = con;
      //}

       public EnContrato Leer(int pidContrato, SqlConnection conexion)
      {
         EnContrato oEnContrato = null;
         SqlCommand cmd = new SqlCommand("sExportaciones_ContratoLeer", conexion);
         cmd.CommandType = CommandType.StoredProcedure;

         SqlParameter Parametro1 = cmd.Parameters.Add("@piidContrato", SqlDbType.Int);
         Parametro1.Direction = ParameterDirection.Input;
         Parametro1.Value = pidContrato;

         SqlDataReader drd = cmd.ExecuteReader(CommandBehavior.SingleResult);
         if (drd != null)
         {

            if (drd.Read())
            {
               oEnContrato = new EnContrato();
               oEnContrato.idContrato = drd.GetInt32(0);
               oEnContrato.idFolioDespacho = drd.GetInt32(1);
               if (!drd.IsDBNull(2))
               {
                  oEnContrato.snumero = drd.GetString(2);
               }
               if (!drd.IsDBNull(3))
               {
                  oEnContrato.sfechaVencimiento = drd.GetString(3);
               }
               if (!drd.IsDBNull(4))
               {
                  oEnContrato.sfechaCreacion = drd.GetString(4);
               }
               if (!drd.IsDBNull(5))
               {
                  oEnContrato.contratoDig = drd.GetString(5);
               }
            }
            drd.Close();
         }

         return oEnContrato;
      }

      public bool Insertar(EnContrato poEnContrato, SqlConnection conexion)
      {
         bool bExito = false;
         SqlCommand cmd = new SqlCommand("sExportaciones_ContratoInsertar", conexion);
         cmd.CommandType = CommandType.StoredProcedure;

         SqlParameter Parametro1 = cmd.Parameters.Add("@piidContrato", SqlDbType.Int);
         Parametro1.Direction = ParameterDirection.Input;
         Parametro1.Value = poEnContrato.idContrato;

         SqlParameter Parametro2 = cmd.Parameters.Add("@piidFolioDespacho", SqlDbType.Int);
         Parametro2.Direction = ParameterDirection.Input;
         Parametro2.Value = poEnContrato.idFolioDespacho;

         SqlParameter Parametro3 = cmd.Parameters.Add("@pinumero", SqlDbType.VarChar);
         Parametro3.Direction = ParameterDirection.Input;
         Parametro3.Value = poEnContrato.snumero;

         SqlParameter Parametro4 = cmd.Parameters.Add("@pifechaVencimiento", SqlDbType.VarChar);
         Parametro4.Direction = ParameterDirection.Input;
         Parametro4.Value = poEnContrato.sfechaVencimiento;

         SqlParameter Parametro5 = cmd.Parameters.Add("@pifechaCreacion", SqlDbType.VarChar);
         Parametro5.Direction = ParameterDirection.Input;
         Parametro5.Value = poEnContrato.sfechaCreacion;

         SqlParameter Parametro6 = cmd.Parameters.Add("@picontratoDig", SqlDbType.Text);
         Parametro6.Direction = ParameterDirection.Input;
         Parametro6.Value = poEnContrato.contratoDig;

         int n = cmd.ExecuteNonQuery();
         bExito = (n > 0);

         return bExito;
      }


      public bool Modificar(EnContrato poEnContrato, SqlConnection conexion)
      {
         bool bExito = false;
         SqlCommand cmd = new SqlCommand("sExportaciones_ContratoModificar", conexion);
         cmd.CommandType = CommandType.StoredProcedure;

         SqlParameter Parametro1 = cmd.Parameters.Add("@piidContrato", SqlDbType.Int);
         Parametro1.Direction = ParameterDirection.Input;
         Parametro1.Value = poEnContrato.idContrato;

         SqlParameter Parametro2 = cmd.Parameters.Add("@piidFolioDespacho", SqlDbType.Int);
         Parametro2.Direction = ParameterDirection.Input;
         Parametro2.Value = poEnContrato.idFolioDespacho;

         SqlParameter Parametro3 = cmd.Parameters.Add("@pinumero", SqlDbType.VarChar);
         Parametro3.Direction = ParameterDirection.Input;
         Parametro3.Value = poEnContrato.snumero;

         SqlParameter Parametro4 = cmd.Parameters.Add("@pifechaVencimiento", SqlDbType.VarChar);
         Parametro4.Direction = ParameterDirection.Input;
         Parametro4.Value = poEnContrato.sfechaVencimiento;

         SqlParameter Parametro5 = cmd.Parameters.Add("@pifechaCreacion", SqlDbType.VarChar);
         Parametro5.Direction = ParameterDirection.Input;
         Parametro5.Value = poEnContrato.sfechaCreacion;

         SqlParameter Parametro6 = cmd.Parameters.Add("@picontratoDig", SqlDbType.Text);
         Parametro6.Direction = ParameterDirection.Input;
         Parametro6.Value = poEnContrato.contratoDig;

         int n = cmd.ExecuteNonQuery();
         bExito = (n > 0);

         return bExito;
      }

      public List<EnContrato> Listar(int pidContrato, SqlConnection conexion)
      {
         List<EnContrato> loEnContrato = null;
         EnContrato oEnContrato = null;
         SqlCommand cmd = new SqlCommand("sExportaciones_ContratoListar", conexion);
         cmd.CommandType = CommandType.StoredProcedure;

         SqlParameter Parametro1 = cmd.Parameters.Add("@piidContrato", SqlDbType.Int);
         Parametro1.Direction = ParameterDirection.Input;
         Parametro1.Value = pidContrato;

         SqlDataReader drd = cmd.ExecuteReader(CommandBehavior.SingleResult);
         if (drd != null)
         {

            loEnContrato = new List<EnContrato>();
            while (drd.Read())
            {
               oEnContrato = new EnContrato();
               oEnContrato.idContrato = drd.GetInt32(0);
               oEnContrato.idFolioDespacho = drd.GetInt32(1);
               if (!drd.IsDBNull(2))
               {
                  oEnContrato.snumero = drd.GetString(2);
               }
               if (!drd.IsDBNull(3))
               {
                  oEnContrato.sfechaVencimiento = drd.GetString(3);
               }
               if (!drd.IsDBNull(4))
               {
                  oEnContrato.sfechaCreacion = drd.GetString(4);
               }
               if (!drd.IsDBNull(5))
               {
                  oEnContrato.contratoDig = drd.GetString(5);
               }
               loEnContrato.Add(oEnContrato);
            }
            drd.Close();
         }

         return loEnContrato;
      }
   }
}
